package actions;

import java.util.Map;

import modelo.Usuario;

import org.apache.struts2.interceptor.SessionAware;

import DAO.FactoryDAO;
import DAO.UsuarioDAO;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class usuarioCambiaClave extends ActionSupport implements SessionAware {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String id;
	private String claveActual;
	private String claveNueva;
	private String claveConfirmacion;
	private Usuario user = new Usuario();
	private UsuarioDAO userDAO = FactoryDAO.getUsuarioDAO();
	private Map<String, Object> session;

	public String execute() {
		user = userDAO.buscarUsuario(Long.parseLong(getId()));
		if (user.getClave().equals(getClaveActual())) {
			if (getClaveNueva().equals(getClaveConfirmacion())) {
				user.setClave(getClaveNueva());
				userDAO.modificar(user);
				session = ActionContext.getContext().getSession();
				session.put("clave", user.getClave());
			}
		}
		return "SUCCESS";
	}

	public void validate() {
		if (getClaveActual().equals("") && getClaveNueva().equals("")
				&& getClaveConfirmacion().equals("")) {
			addFieldError("claveActual", getText("global.usuarioClaveVacios"));
		} else if (getClaveActual().equals("") || getClaveNueva().equals("")
				|| getClaveConfirmacion().equals("")) {
			if (getClaveActual().equals("")) {
				addFieldError("claveActual", getText("global.claveVacia"));

			}

			if (getClaveNueva().equals("")) {
				addFieldError("claveActual", getText("global.claveVacia"));
			}
			if (getClaveConfirmacion().equals("")) {
				addFieldError("claveNueva",
						getText("global.claveConfirmacionVacio"));
			}
		}
		if (getClaveNueva().compareTo(getClaveConfirmacion()) != 0) {
			addFieldError("claveConfirmacion",
					getText("global.claveDestintaConfirmacion"));
		}
	}

	@Override
	public void setSession(Map<String, Object> arg0) {
		// TODO Auto-generated method stub

	}

	public Usuario getUser() {
		return user;
	}

	public void setUser(Usuario user) {
		this.user = user;
	}

	public UsuarioDAO getUserDAO() {
		return userDAO;
	}

	public void setUserDAO(UsuarioDAO userDAO) {
		this.userDAO = userDAO;
	}

	public String getClaveActual() {
		return claveActual;
	}

	public void setClaveActual(String claveActual) {
		this.claveActual = claveActual;
	}

	public String getClaveNueva() {
		return claveNueva;
	}

	public void setClaveNueva(String claveNueva) {
		this.claveNueva = claveNueva;
	}

	public String getClaveConfirmacion() {
		return claveConfirmacion;
	}

	public void setClaveConfirmacion(String claveConfirmacion) {
		this.claveConfirmacion = claveConfirmacion;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

}
